package yunjiao.javatutorials.guava.concurrent;

import com.google.common.util.concurrent.SettableFuture;

/**
 * 幂等性验证：重复设置无效
 *
 * @author yangyunjiao
 */
public class SettableFutureIdempotentDemo {
    public static void main(String[] args) {
        SettableFuture<String> future = SettableFuture.create();

        // 第一次设置：成功
        boolean firstSet = future.set("第一次设置的结果");
        System.out.println("第一次设置：" + firstSet); // true

        // 第二次设置：失败（已完成）
        boolean secondSet = future.set("第二次设置的结果");
        System.out.println("第二次设置：" + secondSet); // false

        // 尝试设置异常：同样失败
        boolean setEx = future.setException(new RuntimeException("测试异常"));
        System.out.println("设置异常：" + setEx); // false

        // 最终结果仍为第一次设置的值
        try {
            System.out.println("最终结果：" + future.get()); // 输出 "第一次设置的结果"
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
